const {ccclass, property} = cc._decorator;

@ccclass
export default class ConfirmManager extends cc.Component {
    public static Instance: ConfirmManager = null;
    _ConfirmFunc: null;
    _ConfirmMsgID: string;
    _ConfirmBackArgList: any[];
    onLoad() {
        if (ConfirmManager.Instance !== null) {
            this.destroy();
            return;
        }
        ConfirmManager.Instance = this;
    }

    /**
	 * 初始化函数
	 */
	Init(){
		//等待玩家确认执行函数
		this._ConfirmFunc = null;

		//等待事件类型
		this._ConfirmMsgID = "";

		//等待事件附加参数列表
		this._ConfirmBackArgList = [];

		// this.SysNotifyManager = app.SysNotifyManager();
		console.log("create ConfirmManager");

	}

	
	/**
	 * 记录等待确认界面事件
	 * @param {}  curFunc 回调函数
	 * @return {} 0/1
	 * @remarks {} PY调用  
	 */
	SetWaitForConfirmForm(curFunc, msgID, backArgList){

		//界面不存在
		if(typeof(curFunc) != "function"){
			console.log("SetWaitForConfirmForm(%s,%s)error", curFunc, msgID);
			return;
		}
		this._ConfirmFunc = curFunc;
		this._ConfirmMsgID = msgID;
		this._ConfirmBackArgList = backArgList;
	}

	/**
	 * 修改事件回调参数列表
	 * @param {}  curFunc 回调函数
	 * @return {} 0/1
	 * @remarks {} PY调用
	 */
	SetConfirmArgList(backArgList){
		this._ConfirmBackArgList = backArgList;
	}

	/**
	 * 带有"确定"和"取消"按钮的消息提示框
	 * @param {}  msgID 提示信息id
	 * @return {} 0/1
	 * @remarks {} PY调用      
	 */
	ShowConfirm(confirmType, msgID, msgArgList, content = "", lbSure ="", lbCancle=""){
		if (content == "") {
			content = SysNotifyManager.GetSysMsgContentByMsgID(msgID, msgArgList);
		}
		app.FormManager().ShowForm("UIMessage", "OnConFirm", confirmType, msgID, msgArgList, content, lbSure, lbCancle)
	}

	/**
	 * 关闭全部提示框界面
	 * @param {}  self 类本身 
	 * @return {} 无
	 * @remarks {} 函数详细说明:关闭全部提示框界面
	 */
	CloseAllBox(){
	}

	/**
	 * 显示购买按钮
	 * @param {}  msgID 提示信息id
	 * @return {} 0/1
	 * @remarks {} PY调用
	 */
	ShowBuyMsg(msgID, msgArgList){
		app.FormManager().ShowForm("UIAmountAffirm", msgID, msgArgList)
	}


	/**
	 * 使用道具界面
	 * @param {}  msgID 提示信息id
	 * @return {} 0/1
	 * @remarks {} PY调用
	 */
	ShowUseMsg(msgID, msgArgList){
		console.log("ShowUseMsg")
	}

	/**
	 * 等待确认框回调函数
	 * @param {}  result 
	 * @return {} null
	 * @remarks {} null
	 */
	OnConFirmResult(clickType){

		if(!this._ConfirmFunc){
			return
		}

		if(typeof(this._ConfirmFunc) != "function"){
			console.log("OnConFirm _ConfirmFunc:%s error", this._ConfirmFunc);
			return;
		}
		//清空
		var msgID = this._ConfirmMsgID;
		var func = this._ConfirmFunc;
		var argList = this._ConfirmBackArgList;

		this._ConfirmFunc = null;
		this._ConfirmBackArgList = [];

		func(clickType, msgID, argList);
	}

}
